Virtualization allows computer resources, such as processors, computer memories, network bandwidth and data storage facilities, to be shared among resource-consuming processing entities, e.g., virtual machines (VMs), running on a distributed computer system. This sharing of computer resources can increase efficiency by reducing maintenance and operating costs, allowing flexibility with respect to individual resource usage, and simplifying resource management. With respect to shared storage, the benefits include data consolidation, universal access to data, ease of storage management, and support for live migration of virtualized environments.
The resource-consuming processing entities can be used to form virtual data centers and other processing clusters to perform various tasks and operations. Administrators and users of these data centers and processing clusters need to efficiently manage different aspects of the data centers and processing clusters, which may involve using consumable software contents, such as virtual machine and application templates. Typically, these consumable software contents are stored in local or remote datastores that can be accessed to anyone with administrative rights to the data centers or processing clusters and their datastores. This presents a security issue since anyone with access to a data center or processing cluster and its datastore can also freely access the consumable software contents stored in the datastore, and, for example, initiate unauthorized build of resource-consuming processing entities using the consumable software contents. In addition, sharing these consumable software contents between different administrators and users can be tedious and time-consuming since the consumable software contents may be stored in numerous datastores located in different regions or locations.